package club.xyes.zkh.ecommerce.service;

import club.xyes.zkh.ecommerce.commons.entity.Shop;
import club.xyes.zkh.ecommerce.commons.entity.User;
import club.xyes.zkh.ecommerce.commons.entity.UserCollectShop;
import com.github.pagehelper.PageInfo;

/**
 * Create by 郭文梁 2019/4/18 0018 14:06
 * UserCollectShopService
 * 用户收藏店铺相关业务行为定义
 *
 * @author 郭文梁
 * @data 2019/4/18 0018
 */
public interface UserCollectShopService extends BaseService<UserCollectShop> {
    /**
     * 创建收藏记录
     *
     * @param user 用户
     * @param shop 商铺
     * @return 收藏记录
     */
    UserCollectShop collect(User user, Shop shop);

    /**
     * 通过用户和商铺查询收藏记录
     *
     * @param user 用户
     * @param shop 商铺
     * @return 收藏记录
     */
    UserCollectShop findByUserAndShop(User user, Shop shop);

    /**
     * 根据用户ID查询收藏记录
     *
     * @param userId 用户ID
     * @param page   页码
     * @param rows   每页大小
     * @return PageInfo
     */
    PageInfo<UserCollectShop> findByUserId(Integer userId, Integer page, Integer rows);

    /**
     * 判断用户是否已收藏过商铺
     *
     * @param userId 用户ID
     * @param shopId 商铺ID
     * @return 是否已收藏
     */
    boolean isCollected(Integer userId, Integer shopId);

    /**
     * 取消收藏商铺
     *
     * @param user 用户
     * @param shop 商铺
     * @return UCS
     */
    UserCollectShop unCollect(User user, Shop shop);
}
